
// leetcode 92. 反转链表 II
/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode() {}
 * ListNode(int val) { this.val = val; }
 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
//class Solution {
//    public ListNode reverseBetween(ListNode head, int left, int right) {
//        ListNode dummy = new ListNode(-1);
//        dummy.next = head;
//
//        // 找到 left - 1 节点
//        ListNode prev = dummy;
//        for (int i = 0; i < left - 1; i++) {
//            prev = prev.next;
//        }
//
//        // 找到 right 节点
//        ListNode rightNode = prev;
//        for (int i = 0; i < right - left + 1; i++) {
//            rightNode = rightNode.next;
//        }
//
//        // 链表分割
//        ListNode leftNode = prev.next;
//        ListNode end = rightNode.next;
//        // 切断链接
//        prev.next = null;
//        rightNode.next = null;
//
//        // 反转链表
//        reverse(leftNode);
//
//        // 连接
//        prev.next = rightNode;
//        leftNode.next = end;
//        return dummy.next;
//    }
//
//
//    public void reverse(ListNode head) {
//        ListNode prev = null;
//        ListNode cur = head;
//        while (cur != null) {
//            ListNode curNext = cur.next;
//            cur.next = prev;
//            prev = cur;
//            cur = curNext;
//        }
//    }
//}